import vnode from './vnode.js'
import createElement from './createElement.js'
import patchVnode from './patchVnode.js';
// 旧虚拟节点 oldVnode
// 新虚拟节点 newVnode
export default function (oldVnode, newVnode) {
    // console.log(oldVnode);
    // console.log(oldVnode.sel);
    // console.log(newVnode.sel);

    // 如果oldVnode没有sel 就是非虚拟节点 就让它变成虚拟节点
    if (oldVnode.sel == undefined) {
        oldVnode = vnode(
            oldVnode.tagName.toLowerCase(),
            {}, //data,
            [], //children,
            undefined,//text,
            oldVnode
        )
    }
    // console.log(oldVnode);
    // 元素节点是否相同
    if (oldVnode.sel !== newVnode.sel) {
        // console.log('不同元素');
        // 暴力删除旧节点，插入新节点
        let newVnodeElm = createElement(newVnode)
        // console.log(newVnodeElm);
        // 获取旧的虚拟节点的 .elm就是真的节点
        let oldVnodeElm = oldVnode.elm
        // 创建新的节点
        if (newVnodeElm) {
            oldVnodeElm.parentNode.insertBefore(newVnodeElm, oldVnodeElm)
        }
        // 删除旧节点
        oldVnodeElm.parentNode.removeChild(oldVnodeElm)
    } else {
        // console.log('相同元素');
        patchVnode(oldVnode, newVnode)
    }
}